﻿/******************************************************************************
 *  PawnShop.UI.DDDW.JS  [written by zhouqd] 
 *  publish date: 2009-7-6 (V0.1) 
 *****************************************************************************/
/******************************************************************************
 *  定义树状下拉列表类
 */
PawnShop.NameSpace("PawnShop.UI");
(function()
{
    listTable = function (id) {
        this._ID = id;
        this._Target = "_blank";
	    this._Select_Node = null;
	    this._Indent = "16px";
	    this._Line_Height = "14px";
	    this._Line_Width = "19px";
	    this._DataSource = null;
	    this._Rows = null;
	    /**
	     * 得到STYLE属性
	     */
	    this.Get_Style = function()
	    {
	        return get_obj("DropDownList_Table_"+this.id).style;
	    };
	    this.Get_List = function()
	    {
	        return this;
	    }

	    if(document.body==null) document.write('<body></body>');
    	
//	    //在HTML文档中为每个TreeView建立一个层并且在层中建立IFrame
//	    document.write("<DIV id = 'Tree_View_"+this.id+"' ondragstart='return false' onselectstart='return false'/></DIV>");
//	    document.write("<iframe style='{display:none}' id='Tree_Frame_" + this.id +"'></iframe>");
//    	
//	    //定义一个节点作为该树状列表的根节点
//	    this.__container=new Tree_Node("","","","","",new Tree_Action(0,0,0,this.id));
//	    this.__container.is_expanded = true;
    	
	    //定义事件处理函数
	    this.add_default_event('click');
	    this.add_default_event('contextmenu');
	    this.add_default_event('mouseover');
	    this.add_default_event('mouseout');
	    this.add_event("mousedown","Tree_On_DragDown");
	    this.add_event("mouseup","Tree_On_DragUp");
    };
    /*
     * 加入事件处理函数  
     */
    listTable.prototype.Add_Event = function (event_name,fun_name)
    {
      return PawnShop.Utility.Add_Event(this,event_name,fun_name);
    }
    /*
     * 删除事件处理函数
     */
    listTable.prototype.Detach_Event = function (event_name,fun_name)
    {
      return PawnShop.Utility.Detach_Event(this,event_name,fun_name);
    }
    /*
     * 加入缺省的事件处理函数
     */
    listTable.prototype.Add_Default_Event = function (event_name)
    {
        if(event_name=='click') this.Add_Event('click','Tree_On_ClickNode');
        if(event_name=='mouseover') this.Add_Event('mouseover','Tree_On_MouseHover');
        if(event_name=='mouseover') this.Add_Event('mouseout','Tree_On_MouseOut');
    }
    /*
     * 删除缺省的事件处理函数
     */
    listTable.prototype.Del_Default_Event = function (event_name)
    {
        if(event_name=='click') this.Detach_Event('click','Tree_On_ClickNode');
        if(event_name=='mouseover') this.Detach_Event('mouseover','Tree_On_MouseHover');
        if(event_name=='mouseover') this.Detach_Event('mouseout','Tree_On_MouseOut');
    }
    /*
     * 加入一个子节点
     */
    listTable.prototype.Add_Child = function (parent_id,nIndex,text,img1,img2,tip_text,status)
    {
//	    var parent_node=this.get_node(parent_id);
//	    if(parent_node==null) return null;
//	    return parent_node.add_child(nIndex,text,img1,img2,tip_text,status);
    }
    /*
     * 根据节点的ID得到节点对象
     */
    listTable.prototype.Get_Node = function (node_id)
    {
        var obj=null;
        try
        {
	        obj=Tree_Node_Array[node_id]; //存储节点数据的数组
	        if(obj&&obj.get_tree()==this) return obj;
	        return null;
        }
        catch(e)
        {
	        return null;
        }
    }
    PawnShop.UI.DropDownListTable = listTable;
    var listStyle = {
        ENUM_SHOW_IMAGE : 1,
        ENUM_SHOW_TOOLTIP : 2,
        ENUM_SHOW_STATUS : 4,
        ENUM_HIGHLIGHT_SELECT : 8,
        ENUM_SHOW_LINE : 16,
        ENUM_SHOW_CHECKBOX : 32,
        ENUM_USETEXTASSTATUS : 64,
        ENUM_USETEXTASTIP : 128,
        ENUM_LINES_AT_ROOT : 256
    };
    PawnShop.UI.DropDownListTable.ListStyle = listStyle;
    var listBehavior = {
        ENUM_ACTION_LABEL : 1,
        ENUM_ACTION_IMG : 2,
        ENUM_ACTION_BUTTON : 4,
        ENUM_EXPAND_LABEL : 8,
        ENUM_EXPAND_IMG : 16,
        ENUM_EXPAND_BUTTON : 32,
        ENUM_ENABLE_DRAG_DROP : 64,
        ENUM_LOAD_LABEL : 128,
        ENUM_LOAD_IMG : 256,
        ENUM_LOAD_BUTTON : 512
    };
    PawnShop.UI.DropDownListTable.ListBehavior = listBehavior;
})();

//var  TREE_CHILD=-1,TREE_LAST=-2,TREE_ROOT=-3,TREE_FIRST=-4,TREE_SIBLING=-5,TREE_PREV=-6,
//     TREE_NEXT=-7,TREE_CONST_BEGIN_FOLDER=-1,TREE_CONST_FOLDER=0,TREE_CONST_END_FOLDER=1,
//     TREE_CONST_FILE=2,TREE_LINK=3,TREE_SCRIPT=4,TREE_CONST_END=5;
//// 节点的
//var  HT_LABEL = 1,HT_IMG = 2,HT_BUTTON = 3,HT_CHECKBOX = 4;
//// 节点的显示属性，包括是否显示图片、高亮选中、复选框等等
//var  ENUM_SHOW_IMAGE = 1,ENUM_SHOW_TOOLTIP = 2, ENUM_SHOW_STATUS = 4,ENUM_HIGHLIGHT_SELECT = 8,ENUM_SHOW_LINE = 16,
//     ENUM_SHOW_CHECKBOX = 32,ENUM_USETEXTASSTATUS = 64,ENUM_USETEXTASTIP = 128,ENUM_LINES_AT_ROOT = 256;
//// 
//var  ENUM_ACTION_LABEL =1,ENUM_ACTION_IMG =2,ENUM_ACTION_BUTTON = 4,
//     ENUM_EXPAND_LABEL =8,ENUM_EXPAND_IMG =16,ENUM_EXPAND_BUTTON = 32,ENUM_ENABLE_DRAG_DROP = 64,
//     ENUM_LOAD_LABEL=128,ENUM_LOAD_IMG=256,ENUM_LOAD_BUTTON=512;


///* ------------------------------------------------------------------------- */
///* 拷贝其他节点的属性到本节点                                                */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.load_doc = function (doc)
//{
//	var fr = get_obj('Tree_Frame_'+this.id);
//	var xml_parent_node=doc.getElementsByTagName('node');
//	var tree_parent_node = Tree_Node_Array[this.__loading_id];
//	
//	for(var i=0;i<xml_parent_node.length;i++)
//	{
//		var node = xml_parent_node[i];
//		var text = node.getAttribute('text');
//		if(text==null) text="";
//		var img1 = node.getAttribute('img_normal');
//		if(img1==null) img1="";
//		if(img1!="")
//		{
//			this.img_list.add('dynamic_img_A'+Tree_Node_Index,img1);
//			img1='dynamic_img_A'+Tree_Node_Index;
//		}
//	
//		var img2 = node.getAttribute('img_expanded');
//		if(img2==null) img2="";
//		if(img2!="")
//		{
//			this.img_list.add('dynamic_img_B'+Tree_Node_Index,img2);
//			img2='dynamic_img_B'+Tree_Node_Index;
//		}
//		
//		var tip_text = node.getAttribute('tip_text');
//		if(tip_text==null) tip_text="";
//		var status = node.getAttribute('status');
//		if(status==null) status="";
//		var link = node.getAttribute('link');
//		if(link==null) link="";
//		var target = node.getAttribute('target');
//		if(target==null)target="";
//		var script = node.getAttribute('script');
//		if(script==null)script="";
//		var tag=node.getAttribute('tag');
//		if(tag==null)tag="";
//		var tmp = tree_parent_node.add_child(TREE_LAST,text,img1,img2,tip_text,status);
//		
//		tmp.tag = tag;
//		
//		if(link.length>0) tmp.set_link(link,target);
//		if(script.length>0) tmp.set_script(script);
//    //-------------
//		var attrs = node.attributes;
//		for(var t=0 ; t<attrs.length; t++)
//		{
//			var att = attrs[t];
//			if(att.specified && att.nodeName!= 'img_normal' && att.nodeName!= 'img_expanded' && 
//				att.nodeName!= 'tip_text' && att.nodeName!= 'status' && att.nodeName!= 'link' &&
//				att.nodeName!= 'target' && att.nodeName!= 'script' && att.nodeName!= 'tag' )
//			{
//				try
//				{
//					eval("tmp." + att.nodeName + " = att.nodeValue;" );
//				}
//				catch(e)
//				{
//				}
//			}
//		}
//    //-------------
//		
//		if(node.getAttribute('has_child') == 'true')
//		{
//			tmp.__need_load = true;
//			tmp = tmp.add_child(TREE_LAST,"loading....");
//			tmp.__need_del = true;
//		}
//	}
//	tree_parent_node.__need_load = false;
//	if(tree_parent_node.first_child && tree_parent_node.first_child.__need_del) tree_parent_node.del_child(0);
//}
///* ------------------------------------------------------------------------- */
///* 拷贝其他节点的属性到本节点                                                */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.dynamic_load = function(server_url)
//{
//	this.__server_url = server_url;
//	this.helper_dynamic_load(null);
//}
///* ------------------------------------------------------------------------- */
///* 拷贝其他节点的属性到本节点                                                */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.helper_dynamic_load = function(node)
//{
//	var url=this.__server_url;
//	if(node==null) url += "?tag=null";
//	else url += "?tag=" + node.tag ;
//	this.__loading_id=(node==null?this.__container.id:node.id);
// 	get_obj('Tree_Frame_'+this.id).src  = url;
//}

///* ------------------------------------------------------------------------- */
///* 拷贝其他节点的属性到本节点                                                */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.helper_expand_all = function (node,mode)
//{
//	if(node)
//	{
//		node.expand(mode);
//		var child=node.first_child;
//		while(child)
//		{
//			this.helper_expand_all(child,mode);
//			child=child.next;
//		}
//	}
//}
///* ------------------------------------------------------------------------- */
///* 拷贝其他节点的属性到本节点                                                */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.expand_all = function (mode)
//{
//	if(typeof(mode)!='boolean') return;
//	var node = this.get_root();
//	while(node)
//	{
//		this.helper_expand_all(node,mode);
//		node=node.next;
//	}
//}
///* ------------------------------------------------------------------------- */
///* 拷贝其他节点的属性到本节点                                                */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.get_root = function ()
//{
//	var node;
//	try
//	{
//		node = this.__container.first_child; //得到的是第一个子节点，想得到其他的
//		                                     //root节点需要调用其他的方法
//	}
//	catch(e) 
//	{
//		node = null;
//	}
//	return node;
//}

///* ------------------------------------------------------------------------- */
///* 加入一个根节点                                                            */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.add_root = function (nIndex,text,img1,img2,tip_text,status)
//{
//	return this.__container.add_child(nIndex,text,img1,img2,tip_text,status);
//}
///* ------------------------------------------------------------------------- */
///* 加入一个兄弟节点                                                          */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.add_sibling = function (relate_id,nIndex,text,img1,img2,tip_text,status)
//{
//	if(relate_id==this.__container.id) return null;
//	var node=this.get_node(relate_id);
//	if(node==null) return null;
//	return node.add_sibling(nIndex,text,img1,img2,tip_text,status);
//}

///* ------------------------------------------------------------------------- */
///* 刷新树状列表                                                              */
///* ------------------------------------------------------------------------- */
//Tree_View.prototype.refresh=function ()
//{
//	this.__container.__refresh();
//}

////*******************************************************\\
//function Tree_OnEvent()
//{
//	var event = arguments[0];
//	event.cancel = function cancel()
//	{
//		if(Tree_isNC6) event.preventDefault();
//		if(Tree_isIE) event.returnValue=false;
//	}
//	
//	var element;
//	if(Tree_isNC6) event.srcElement = event.target;
//	
//	element=event.srcElement;
//	var node=null,tree=null;
//	
//	node= Tree_Node_Array[element.id.replace(/(Tree_[a-z]+_)([0-9]+)/g,"$2")];
//	if(null==node)
//	{
//		tree = Tree_View_Array[element.id.replace(/(Tree_[a-z]+_)([0-9]+)/ig,"$2")];
//		if(tree==null)
//		{
//			for(var i=0;i<Tree_View_Array.length;i++)
//			{
//				var tmp=get_obj('Tree_View_'+i);
//				if(Tree_isIE && tmp.contains(element))
//				{
//					tree=Tree_View_Array[i];
//					break;
//				}
//				if(Tree_isNC6)
//				{
//					var tmp_2=element.parentNode;
//					while(tmp_2)
//					{
//						if(tmp.id==tmp_2.id);
//						{
//							tree=Tree_View_Array[i];
//							break;
//						}
//						tmp_2=tmp_2.parentNode;
//					}
//				}
//			}
//			if(tree==null) return;
//		}
//	}
//	else tree = node.get_tree();
//	var hittest = null;
//	if(-1 != element.id.search('Tree_label')) hittest = HT_LABEL;
//	else if(-1 != element.id.search('Tree_img')) hittest = HT_IMG;
//	else if(-1 != element.id.search('Tree_button')) hittest = HT_BUTTON;
//	else if(-1 != element.id.search('Tree_checkbox')) hittest = HT_CHECKBOX;
//	var fun = tree.event_array;
//	var key;
//	for(key in fun[event.type])
//	{
//		try
//		{
//			if(event.type.search('key')!=-1)
//			{
//				eval(key+"(tree,tree.selected_node,hittest,event);");
//			}
//			else eval(key+"(tree,node,hittest,event);");
//		}
//		catch(e) 
//		{	
//			alert('runtime error\r\n' + e.description+"\r\nevent:"+event.type);
//		}
//	}
//}